<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html>
<head>
<title>Dialogs</title>
<link rel="stylesheet" href="/cfg/format.css" type="text/css">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="keywords" content="Winforms, Mono, .NET, Visual Basic, dialogs, programming, tutorial">
<meta name="description" content="Dialogs">
<meta name="language" content="en">
<meta name="author" content="Jan Bodnar">
<meta name="distribution" content="global">

<script type="text/javascript" src="/lib/jquery.js"></script>
<script type="text/javascript" src="/lib/common.js"></script>

</head>

<body>

<div class="container">

<div id="wide_ad" class="ltow">
<script type="text/javascript"><!--
google_ad_client = "pub-9706709751191532";
/* 160x600, August 2011 */
google_ad_slot = "2484182563";
google_ad_width = 160;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>

<div class="content">


<a href="/" title="Home">Home</a>&nbsp;
<a href=".." title="Home">Contents</a>


<h1>Dialogs</h1>


<p>
In this part of the Visual Basic Winforms tutorial, we will talk about dialogs.
</p>

<div class="center">
<script type="text/javascript"><!--
google_ad_client = "ca-pub-9706709751191532";
/* top_horizontal */
google_ad_slot = "3327173442";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>

<p>
Dialog windows or dialogs are an indispensable part of most modern GUI applications. 
A dialog is defined as a conversation between two or more persons. In a computer 
application a dialog is a window which is used to "talk" to the application. 
A dialog is used to input data, modify data, change the application settings etc. 
Dialogs are important means of communication between a user and a computer program.
</p>

<p>
There are essentially two types of dialogs. Predefined dialogs and custom dialogs. 
</p>


<h2>FolderBrowserDialog</h2>

<p>
This dialog prompts the user to select a folder. 
</p>


<pre class="code">
' ZetCode Mono Visual Basic Winforms tutorial
'
' In this program we select a directory with a
' FolderBrowser dialog. The selected directory's
' name is shown in the statusbar. 
'
' author jan bodnar
' last modified May 2009
' website www.zetcode.com

Imports System.Windows.Forms
Imports System.Drawing


Public Class WinVBApp
    Inherits Form
    
    Dim statusbar As StatusBar

    Public Sub New

       Me.Text = "FolderBrowserDialog"
       Me.Size = New Size(300, 250)
       
       Me.InitUI
       
       Me.CenterToScreen

    End Sub
    
    Private Sub InitUI
    
        Dim toolbar As New ToolBar
        Dim open As New ToolBarButton

        statusbar = New StatusBar
        statusbar.Parent = Me

        toolbar.Buttons.Add(open)

        Me.Controls.Add(toolbar)

        AddHandler toolbar.ButtonClick, AddressOf Me.OnClicked
        
    End Sub

    Private Sub OnClicked(ByVal sender As Object, _
                    ByVal e As ToolBarButtonClickEventArgs)
    
        Dim dialog As New FolderBrowserDialog

        If dialog.ShowDialog(Me) = DialogResult.OK
           statusbar.Text = dialog.SelectedPath
        End If

    End Sub


    Public Shared Sub Main
        Application.Run(New WinVBApp)
    End Sub
   
End Class
</pre>

<p>
We have a toolbar and one toolbar button. By clicking on the button, 
the <b class="keyword">FolderBrowserDialog</b> appears on the screen. 
The name of the selected folder is shown in the statusbar. 
</p>


<pre class="explanation">
 Dim dialog As New FolderBrowserDialog
</pre>

<p>
The <b class="keyword">FolderBrowserDialog</b> is created.
</p>

<pre class="explanation">
 If dialog.ShowDialog(Me) = DialogResult.OK
     statusbar.Text = dialog.SelectedPath
 End If    
</pre>

<p>
The <b class="keyword">ShowDialog</b> method shows the dialog on the screen. 
If we click on the OK button
of the dialog, the selected directory path is shown on the statusbar.
</p>


<br>
<img src="/img/gui/vbwinf/folderbrowser.png" alt="FolderBrowserDialog">
<div class="figure">Figure: FolderBrowserDialog</div>


<h2>ColorDialog</h2>

<p>
This dialog displays available colors along with controls that enable 
the user to define custom colors. 
</p>

<pre class="code">
' ZetCode Mono Visual Basic Winforms tutorial
'
' In this program we use the ColorDialog
' to change a color of a rectangle
'
' author jan bodnar
' last modified May 2009
' website www.zetcode.com

Imports System.Windows.Forms
Imports System.Drawing


Public Class WinVBApp
    Inherits Form
    
    Private col As Color

    Private Const rectWidth As Integer = 100
    Private Const rectHeight As Integer = 100
    Private Dim r As Rectangle


    Public Sub New

       Me.Text = "ColorDialog"
       Me.Size = New Size(300, 250)
       
       Me.InitUI
       
       Me.CenterToScreen

    End Sub
    
    Private Sub InitUI
    
        Dim tbar As New ToolBar
        Dim open As New ToolBarButton

        col = Color.Blue

        tbar.Buttons.Add(open)

        Me.LocateRect

        Me.SetStyle(ControlStyles.ResizeRedraw, True)
        Controls.Add(tbar)

        AddHandler Me.Paint, AddressOf Me.OnPaint
        AddHandler tbar.ButtonClick, AddressOf Me.OnClicked
        
    End Sub
    
    Private Sub OnPaint(ByVal sender As Object, ByVal e As PaintEventArgs)
    
      Dim g As Graphics = e.Graphics
      Me.LocateRect

      Dim brsh As New SolidBrush(col)

      g.FillRectangle(brsh, r)    
    
    End Sub

    Private Sub OnClicked(ByVal sender As Object, _ 
                    ByVal e As ToolBarButtonClickEventArgs)
    
       Dim dialog As New ColorDialog
       
       If dialog.ShowDialog(Me) = DialogResult.OK
          col = dialog.Color
          Me.Invalidate
       End If

    End Sub
    
    Private Sub LocateRect
        Dim x As Integer = (Me.ClientSize.Width - rectWidth) / 2
        Dim y As Integer = (Me.ClientSize.Height - rectHeight) / 2
        r = New Rectangle(x, y, rectWidth, rectHeight)
    End Sub


    Public Shared Sub Main
        Application.Run(New WinVBApp)
    End Sub
   
End Class
</pre>

<p>
In this code example, we use the <b class="keyword">ColorDialog</b> 
to choose a color for a rectangle, that is
located in the middle of the form control. 
</p>

<pre class="explanation">
 col = Color.Blue
</pre>

<p>
At the beginning, the color of the rectangle is blue. We use the 
<b class="keyword">col</b> variable to determine
the color of the rectangle. 
</p>

<pre class="explanation">
 Dim dialog As New ColorDialog
</pre>

<p>
The <b class="keyword">ColorDialog</b> is created. 
</p>

<pre class="explanation">
 If dialog.ShowDialog(Me) = DialogResult.OK
   col = dialog.Color
   Me.Invalidate
 End If
</pre>

<p>
The code shows the color dialog. If we click on the OK button, 
we get the selected color and
call the <b class="keyword">Invalidate</b> method. The method 
invalidates the entire surface of the control 
and causes the control to be redrawn. The result is that the 
rectangle is drawn with a new color value.
</p>


<br>
<img src="/img/gui/vbwinf/colordialog.png" alt="ColorDialog">
<div class="figure">Figure: ColorDialog</div>


<h2>FontDialog</h2>

<p>
The <b class="keyword">FontDialog</b> is used to select fonts.
</p>

<pre class="code">
' ZetCode Mono Visual Basic Winforms tutorial
'
' In this program we use the FontDialog
' to change a font of a label
'
' author jan bodnar
' last modified May 2009
' website www.zetcode.com

Imports System.Windows.Forms
Imports System.Drawing


Public Class WinVBApp
    Inherits Form
    
    Private Dim txt As Label
    
    Public Sub New

       Me.Text = "FontDialog"
       Me.Size = New Size(300, 250)
       
       Me.InitUI
       
       Me.CenterToScreen

    End Sub
    
    Private Sub InitUI
    
        Dim tbar As New ToolBar
        tbar.Parent = Me
        
        Dim open As New ToolBarButton
        tbar.Buttons.Add(open)

        txt = New Label
        txt.Parent = Me
        txt.Text = "Winforms tutorial"
        
        Me.LocateText
        
        txt.AutoSize = True

        AddHandler Me.Resize, AddressOf Me.OnResize
        AddHandler tbar.ButtonClick, AddressOf Me.OnClicked
        
    End Sub
    
    Private Sub OnClicked(ByVal sender As Object, _ 
                    ByVal e As ToolBarButtonClickEventArgs)
    
       Dim dialog As New FontDialog
       
       If dialog.ShowDialog(Me) = DialogResult.OK
          txt.Font = dialog.Font
          Me.LocateText
       End If

    End Sub
    
    Private Sub LocateText
        txt.Top = (Me.ClientSize.Height - txt.Height) / 2
        txt.Left = (Me.ClientSize.Width - txt.Width) / 2
    End Sub

    Private Sub OnResize(ByVal sender As Object, ByVal e As EventArgs)
         Me.LocateText
    End Sub

    Public Shared Sub Main
        Application.Run(New WinVBApp)
    End Sub
   
End Class
</pre>

<p>
We draw some text in the middle of the form control. We use the font 
dialog to change font for this text. 
</p>

<pre class="explanation">
 Dim dialog As New FontDialog
</pre>

<p>
<b class="keyword">FontDialog</b> is created. 
</p>

<pre class="explanation">
 If dialog.ShowDialog(Me) = DialogResult.OK
   txt.Font = dialog.Font
   Me.LocateText
 End If
</pre>

<p>
When we click on the OK button, we set a newly selected font for the 
<b class="keyword">Label</b>
control. Because the size of the text changes with different fonts, 
we must call the <b class="keyword">LocateText</b> 
method, which locates the text in the middle of the form control. 
</p>

<br>
<img src="/img/gui/vbwinf/fontdialog.png" alt="FontDialog">
<div class="figure">Figure: FontDialog</div>


<h2>OpenDialog</h2>

<p>
This dialog is used to open files.
</p>

<pre class="code">
' ZetCode Mono Visual Basic Winforms tutorial
'
' In this program we use the OpenDialog to
' open a file and show its contents in 
' a TextBox control
'
' author jan bodnar
' last modified May 2009
' website www.zetcode.com

Imports System.Windows.Forms
Imports System.Drawing
Imports System.IO


Public Class WinVBApp
    Inherits Form
    
    Private txtBox As TextBox
    
    Public Sub New

       Me.Text = "OpenDialog"
       Me.Size = New Size(300, 250)
       
       Me.InitUI
       
       Me.CenterToScreen

    End Sub
    
    Private Sub InitUI
    
        Dim tbar As New ToolBar
        tbar.Parent = Me
        
        Dim open As New ToolBarButton
        tbar.Buttons.Add(open)

        txtBox = New TextBox
        txtBox.Parent = Me
        txtBox.Multiline = True
        txtBox.ScrollBars = ScrollBars.Both
        txtBox.WordWrap = False
        txtBox.Parent = Me
        txtBox.Dock = DockStyle.Fill

        AddHandler tbar.ButtonClick, AddressOf Me.OnClicked
        
    End Sub
    
    Private Sub OnClicked(ByVal sender As Object, _ 
                    ByVal e As ToolBarButtonClickEventArgs)
                    
       Dim dia As New OpenFileDialog
       dia.Filter = "VB files (*.vb)|*.vb"

       If dia.ShowDialog(Me) = DialogResult.OK
           
           Dim reader As New StreamReader(dia.FileName)
           Dim data As String = reader.ReadToEnd
           
           reader.Close
           txtBox.Text = data
       
       End If
       
    End Sub
    

    Public Shared Sub Main
        Application.Run(New WinVBApp)
    End Sub
   
End Class
</pre>

<p>
We use the <b class="keyword">OpenDialog</b> control to open VB source files. 
We have a <b class="keyword">TextBox</b>
control, where we display the file. 
</p>


<pre class="explanation">
 Dim dia As New OpenFileDialog
</pre>

<p>
The <b class="keyword">OpenDialog</b> is created. 
</p>


<pre class="explanation">
 dia.Filter = "VB files (*.vb)|*.vb"
</pre>

<p>
We set the <b class="keyword">Filter</b> property to VB source files. 
Only VB files can be chosen with this dialog instance. 
</p>

<pre class="explanation">
 If dia.ShowDialog(Me) = DialogResult.OK
    
     Dim reader As New StreamReader(dia.FileName)
     Dim data As String = reader.ReadToEnd
    
     reader.Close
     txtBox.Text = data

 End If
</pre>

<p>
After clicking OK, we read the contents of the chosen file and put it into 
the <b class="keyword">TextBox</b> control. 
</p>

<br>
<img src="/img/gui/vbwinf/opendialog.jpg" alt="OpenDialog">
<div class="figure">Figure: OpenDialog</div>

<hr class="btm">

<p>
In this part of the Visual Basic Winforms tutorial, we showed various dialogs. 
</p>

<br>
<div class="center"> 
<script type="text/javascript"><!--
google_ad_client = "pub-9706709751191532";
/* horizontal */
google_ad_slot = "1734478269";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script> 
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> 
</script> 
</div> 
<br>


<div class="botNav, center">
<span class="botNavItem"><a href="/">Home</a></span> ‡ <span class="botNavItem"><a href="..">Contents</a></span> ‡ 
<span class="botNavItem"><a href="#">Top of Page</a></span>
</div>


<div class="footer">
<div class="signature">
<a href="/">ZetCode</a> last modified June 2, 2009  <span class="copyright">&copy; 2007 - 2012 Jan Bodnar</span>
</div>
</div>

</div> <!-- content -->

</div> <!-- container -->

</body>
</html>

